Data processors are used in nearly every type of modern electronic device, including consumer electronics, industrial machinery, scientific apparatuses and communication networks. However, the performance and degree of complexity of the data processors (or microprocessors) used in different applications may vary widely. The speed and power requirements of a particular application are important in determining the type of data processor used.
The type of data processor used is particularly important in software-defined radio (SDR) implementations. An SDR device uses reconfigurable hardware that may be programmed over the air to operate under different wireless protocols. For example, an SDR transceiver in a wireless laptop computer may be configured by a first software load to operate in an IEEE-802.11x wireless network and may be reconfigured by a second software load to operate in a CDMA2000 wireless network.
There are six main types of data processors in common use: 1) digital signal processors, 2) reduced instruction set computers, 3) complex instruction set computers, 4) field programmable gate arrays, 5) application specific integrated circuits, and 6) application specific instruction set processors. Each of these types of data processors has particular advantages and particular disadvantages.
A digital signal processor (DSP) is a general-purpose processor optimized to efficiently execute digital signal processing operations, such as a Multiply-Accumulate operation for finite impulse response (FIR) filtering and Fast Fourier Transform (FFT) operations. A DSP implements many sophisticated addressing modes to cover many of the DSP calculation requirements, such as bit reverse addressing mode for FFT, index addressing for FIFO devices, and the like. Examples of DSPs include: 1) the MOTOROLA 56000, 56300, SC81xx, and MRC6011 processors; 2) the TEXAS INSRTUMENTS (TI) C55, C6203, C6416, and C67xx processors; 3) the ADI SHARC processors and the TIGERSHARC processors; and 4) the MORPHO MS1-64 Reconfigurable DSP.
A reduced instruction set computer (RISC) is a general purpose processor (GPP) that mainly targets control applications, such as media access control (MAC) applications. The main advantage of the RISC machine is its simplicity. As its name, a RISC processor has small instruction set, which provides more code density as well as faster change-of-flow reaction. Examples of RISC devices include: 1) ARM processors (e.g., ARM926, ARM1136J); 2) MIPS processors (e.g., MIPS32, MIPS64); 3) the IBM PowerPC 405 and 750FX processors; and 4) the MOTOROLA PowerPC 603 processors.
A complex instruction set computer (CISC) device is a general purpose processor (GPP) targeted to the general purpose applications ranging from multimedia applications to PC applications. Examples of CISC processors include: 1) the INTEL PENTIUM processors; and 2) the MOTOROLA 68000 processors.
The field programmable gate array (FPGA) is a reconfigurable hardware device based on an array of hardware cells connected through long-busses and local busses. FPGA devices are quite commonly used in wireless network base station applications and prototypes. Examples of FPGA devices include: 1) the XILINX VIRTEX IV device; and 2) the Altera Stratix II device.
An application specific integrated circuit (ASIC) is a hardware device specially designed for a specific application. An ASIC is usually very power efficient. ASIC devices are used in many wireless devices (i.e., cell phones, etc.). An application specific instruction set processor (ASIP) is an enhanced version of an ASIC device that adds more programmability to the ASIC hardware.
Each of the above-described processors has certain advantages and suffers from particular disadvantages. Digital signal processors are the most flexible type of processor, from a software point of view, in order to meet software-defined radio (SDR) requirements. However, DSP devices do not have enough MIPS performance and bit manipulation architecture to meet 3G and 4G bit-rate processing requirements. RISC processors target control applications, but are inadequate beyond baseband applications for wireless network implementations. CISC processors may have the flexibility and the MIPS performance to process baseband applications, but their poor power efficiency makes them unsuitable for handset power restrictions. FPGA devices, like CISC processors, may meet the required MIPS performance, but their poor power efficiency makes them unsuitable for handset designs.
ASIC devices are well matched to the power and cost restrictions of handset designs. However, their flexibility is too limited to make them suitable for SDR implementations. ASIP devices achieve greater flexibility than ASIC devices by adding more programmability to the application specific hardware and by introducing instruction-set processors to the hardware. However, since ASIPs are general-purpose devices, their processor core efficiency depends on the application being processed. The more control code in the application, the less efficient the ASIP will be. This results in poor performance and higher power consumption.
Additional disadvantages of the prior art processors are scalability and modularity. The software-defined radio (SDR) approach was created in order to minimize cost (design time, TTM) and power consumption and to maximize flexibility. The prior art processor implementations fail to provide an optimized combination of scalability and modularity.
The performance of a processor may also be greatly affected by the use of an instruction execution pipeline that processes instructions in stages. Modern data processors use pipelined architectures to achieve high throughput. Generally, an instruction pipeline may be represented by four stages: 1) an instruction fetch (IF) stage, 2) a decode (DE) stage, 3) an execution (EX) stage, and 4) a write-back (WB) stage. Multiple instructions may be loaded into the pipeline and be processed in parallel, rather than waiting for a first instruction to finish before processing a second instruction. For example, while the instruction fetch stage is fetching the kth instruction, the decode stage is decoding the (k+1) instruction, the execution stage is executing the decoded (k+2) instruction, and the write-back stage is writing to memory (or elsewhere) the result of the (k+3) instruction.
The performance improvements provided by instruction pipelines are well-known. However, the control circuitry of instruction pipelines is complicated and often introduces delays into the pipeline. Moreover, both the instruction pipeline data path circuits and the pipeline controller increase the overall power consumption of the data processor. The increased power consumption has a particularly adverse affect in battery-powered wireless device applications.
Therefore, there is a need in the art for an improved data processor design for use in a wide variety of applications. In particular, there is a need for an instruction execution pipeline for use in data processors in software-defined radio (SDR) wireless devices.